package com.sz.common.base.service;

import com.sz.common.base.dto.I18nBaseDto;
import com.sz.common.base.dto.I18nDto;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * Function: 国际化 baseService <br>
 * Author: hpeng.wang <br>
 * Date: 2016-12-01 16:29:00
 */
public interface I18nBaseService {

    /**
     * 保存国际化数据，当refId为同一个时，可调用此方法
     *
     * @param refId     外键id
     * @param list      要保存的国际化对象集合
     * @param tableName 国际化的表名
     */
    void save(Serializable refId, List<? extends I18nBaseDto> list, String tableName);

    /**
     * 保存国际化数据，当refId为多个时调用，例如，国际化页面的调用
     *
     * @param list      要保存的国际化对象集合
     * @param tableName 国际化的表名
     */
    void save(List<? extends I18nBaseDto> list, String tableName);

    /**
     * 通过引用外键物理删除记录
     *
     * @param tableName --表名
     * @param refId     --引用Id
     */
    void deleteByRefId(String tableName, Serializable refId);

    /**
     * 通过引用外键批量物理删除记录
     *
     * @param tableName --表名
     * @param refIds    --引用Id
     */
    void deleteByRefIds(String tableName, List<Integer> refIds);

    /**
     * 通过引用外键查询国际化数据集合
     *
     * @param tableName --表名
     * @param refId     --引用Id
     * @return 国际化数据集合
     */
    List<Map> findByRefId(String tableName, Serializable refId);

    /**
     * 通过引用外键查询国际化数据集合，并封装成I18nDto
     *
     * @param tableName --表名
     * @param refId     --引用Id
     * @return I18nDto数据集合
     */
    List<I18nDto> findI18nDtoByRefId(String tableName, Serializable refId);
}
